package com.sxj.corejava.code07_面向对象;

/**
 * @author 石小俊
 * @date 2025年01月06日
 */
public class Test06_构造方法 {
    public static void main(String[] args) {
        // new User()表示调用了一个方法用于创建对象
        // 该方法称之为构造方法
        // 当User类中没有定义构造方法时,默认存在一个无参的构造方法
        // 如果User类中定义了构造方法,则无参构造方法消失
//        User user = new User();
        User user = new User(1, "admin", "123456");
//        User user = new User("admin","123456");
//        User user = new User(1);
        // 如果没有对对象的属性进行赋值,则使用默认值
        // 该默认值与数组元素的默认值一致
        user.show();

        User user2 = new User(2);
        user2.show();
    }
}

class User {
    int id;
    String username;
    String password;


    public User() {

    }

    public User(int a) {
        id = a;
    }

    // 构造方法语法: 修饰符 类名(参数列表){}
    // 构造方法主要用于对对象中的属性进行初始化
    public User(int id, String username, String password) {
        // this(参数列表)表示调用某一个构造方法
        // 该语句只能处于代码块的第一行,且只能调用一次
        this(username, password);
        this.id = id;
//        this.username = username;
//        this.password = password;
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public void show() {
        System.out.println("id:" + id + ",username:" + username + ",password:" + password);
    }

}


